// var i;
// var c = cc._decorator;
// var s = c.ccclass;
// var l = c.property;
// var u = c.menu;
// var d = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.rotate = 5;
//         t.time = 0.5;
//         t.delayTime = 0;
//         t.isCircle = !1;
//         t.isAuto = !1;
//         return t;
//     }
//     __extends(t, e);
//     t.prototype.onLoad = function () {
//         if (!this.isAuto) {
//             this.startRotate();
//         }
//     };
//     t.prototype.startRotate = function () {
//         this.node.stopAllActions();
//         this.node.angle = 0;
//         if (!this.isCircle) {
//             this.node.runAction(
//                 cc.repeatForever(
//                     cc.sequence(
//                         cc.rotateBy(this.time, this.rotate),
//                         cc.rotateBy(this.time, -this.rotate),
//                         cc.rotateBy(this.time, -this.rotate),
//                         cc.rotateBy(this.time, this.rotate),
//                         cc.rotateBy(this.time, this.rotate),
//                         cc.rotateBy(this.time, -this.rotate),
//                         cc.rotateBy(this.time, -this.rotate),
//                         cc.rotateBy(this.time, this.rotate),
//                         cc.rotateBy(this.time, 0),
//                         cc.delayTime(this.delayTime)
//                     )
//                 )
//             );
//         }
//     };
//     t.prototype.stopRotate = function () {
//         if (!this.isCircle) {
//             this.node.stopAllActions();
//         }
//         this.node.angle = 0;
//     };
//     t.prototype.update = function () {
//         if (this.isCircle) {
//             this.node.angle += this.rotate;
//         }
//     };
//     __decorate(
//         [
//             l({
//                 type: cc.Float
//             })
//         ],
//         t.prototype,
//         "rotate",
//         void 0
//     );
//     __decorate(
//         [
//             l({
//                 type: cc.Float
//             })
//         ],
//         t.prototype,
//         "time",
//         void 0
//     );
//     __decorate(
//         [
//             l({
//                 type: cc.Float
//             })
//         ],
//         t.prototype,
//         "delayTime",
//         void 0
//     );
//     __decorate(
//         [
//             l({
//                 tooltip: "是否一直转圈"
//             })
//         ],
//         t.prototype,
//         "isCircle",
//         void 0
//     );
//     __decorate([l()], t.prototype, "isAuto", void 0);
//     return __decorate([s, u("UI组件/UIRotate")], t);
// })(cc.Component);
// exports.default = d;

const { ccclass, property, menu } = cc._decorator;

/**
 * 旋转组件
 * 建议类名：RotateComponent
 */
@ccclass
@menu("UI组件/UIRotate")
class UIRotate extends cc.Component {
    /** 旋转角度 */
    @property({
        type: cc.Float
    })
    public rotate: number = 5;

    /** 旋转时间 */
    @property({
        type: cc.Float
    })
    public time: number = 0.5;

    /** 延迟时间 */
    @property({
        type: cc.Float
    })
    public delayTime: number = 0;

    /** 是否一直转圈 */
    @property({
        tooltip: "是否一直转圈"
    })
    public isCircle: boolean = false;

    /** 是否自动开始旋转 */
    @property()
    public isAuto: boolean = false;

    /**
     * 加载时调用
     * 建议方法名：handleLoad
     */
    protected onLoad(): void {
        if (!this.isAuto) {
            this.startRotateTween();
        }
    }

    /**
     * 开始旋转
     * 建议方法名：initiateRotation
     */
    public startRotateTween(): void {
        this.node.stopAllActions();
        this.node.angle = 0;
        if (!this.isCircle) {
            this.node.runAction(
                cc.repeatForever(
                    cc.sequence(
                        cc.rotateBy(this.time, this.rotate),
                        cc.rotateBy(this.time, -this.rotate),
                        cc.rotateBy(this.time, -this.rotate),
                        cc.rotateBy(this.time, this.rotate),
                        cc.rotateBy(this.time, this.rotate),
                        cc.rotateBy(this.time, -this.rotate),
                        cc.rotateBy(this.time, -this.rotate),
                        cc.rotateBy(this.time, this.rotate),
                        cc.rotateBy(this.time, 0),
                        cc.delayTime(this.delayTime)
                    )
                )
            );
        }
    }

    /**
     * 停止旋转
     * 建议方法名：haltRotation
     */
    public stopRotateTween(): void {
        if (!this.isCircle) {
            this.node.stopAllActions();
        }
        this.node.angle = 0;
    }

    /**
     * 每帧更新
     * 建议方法名：updateFrame
     */
    protected update(): void {
        if (this.isCircle) {
            this.node.angle += this.rotate;
        }
    }
}

export default UIRotate;